package com.oceansoft.mobile.econsole.modules.news.persistence;

import com.oceansoft.mobile.econsole.modules.base.entity.Query;
import com.oceansoft.mobile.econsole.modules.channel.entity.Channel;
import com.oceansoft.mobile.econsole.modules.news.entity.News;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 新闻数据库映射接口
 *
 * @author: chenw
 * @time: 14-4-29 上午11:06
 */
@Repository
public interface INewsMapper {

    /**
     * 分页加载新闻信息
     *
     * @param query 查询条件
     * @return List<News>
     */
    List<News> loadListByCondition(int channelId);

    /**
     * 统计满足条件全部新闻数量
     *
     * @param channelId 栏目ID
     * @return List<Channel>
     */
    int loadCountByCondition(@Param("channelId") int channelId);

    /**
     * 分页加载新闻信息
     *
     * @param query 查询条件
     * @return List<News>
     */
    List<Channel> loadChannelListByCondition(Query query);
    
    /**
     * 根据条件加载新闻
     * @param query
     * @return
     */
    List<News> loadNewByCondition(Query query);

    /**
     * 统计满足条件全部栏目数量
     *
     * @param query Query
     * @return List<Channel>
     */
    int loadChannelCountByCondition(Query query);

    /**
     * 保存新闻数据至数据库
     *
     * @param news 新闻实体类
     */
    long save(News news);

    /**
     * 加载新闻详细内容
     *
     * @param id 新闻ID
     * @return Result
     */
    News findById(@Param("id") long id);

    /**
     * 加载全部栏目信息
     *
     * @return List<Channel>
     */
    List<Channel> loadAllChannels();

    /**
     * 加载栏目置顶图片新闻列表
     *
     * @param channelId 栏目ID
     * @return List<News>
     */
    List<News> loadChannelTopPicNews(int channelId);

    /**
     * 加载首页图片新闻列表
     *
     * @return List<News>
     */
    List<News> loadTopImgNews();
    
    int updateNews(News news);
    
    int pubNews(News news);
    
    void deleteNewsById(@Param("newsId") int newsId);
}
